Skip to content

feat(caldav): 以共享信息图提供日历、任务与联系人同步 - #146

Merged
xiaoland merged 12 commits into
mainfrom
feat/caldav-extension
Oct 21, 2026
Merged

xiaoland merged 12 commits into
mainfrom
feat/caldav-extension

Conversation

@xiaoland

@xiaoland xiaoland commented Oct 20, 2026 •

Copy link
Copy Markdown
Member

让 InKCre 通过 CalDAV/CardDAV 提供日历、Tasks.org 任务和联系人同步。资源根保留稳定身份及原生剩余属性,电话、邮箱、描述与媒体进入通用 Block/Storage,父子任务使用 Relation;普通 Peer 编辑共享内容会进入 DAV 正文和 ETag。

源值更新重新关联内容,重排保留身份。DAV 删除撤销发布并保留内容与外部引用。启动时原子迁移旧记录,保留根 ID,失败回滚;条件写事务锁定根、关系、目标和 blob。Python 分发为 0.2.0,新增 blob 锁能力使 Host SDK 升为 0.3.3。配套 Web:InKCre/impl-ts#142 。

验收使用指定华为 JKM-AL00a 的 DAVx⁵、Tasks.org、日历和联系人,以及 PR preview:双向同步、离线例外、全天边界、照片、任务完成与删除通过;共享电话/图片修改进入手机,手机照片重编码保留旧引用。最终主干整合 preview 重启前后,24 个 Block、22 条 Relation、2 个 blob 的整体摘要与联系人 ETag 一致;撤销发布的任务仍为 404,Web 可读取原引用内容。

最新主干的仓库、CLI、隔离数据库和 preview 检查通过。本任务的排查文件全部放在 scripts/tests/caldav,不纳入默认测试收集;脚本记录不代替真机验收。教程及截图在 extensions/caldav/docs/global/android.md,跨仓教程链接已指向 main。

保留边界:全图扫描与变化后的完整重扫适用于个人集合,无自动垃圾回收;Last-Modified 仅代表根记录时间,变化检测使用 ETag。只依赖日期的客户端和大型集合未验收。回退运行版本前须保留新图协议支持,旧版单独运行不能处理 v2 图。

- 接入 Radicale 协议引擎与图存储,保护条件写入和集合成员并发
- 发布独立 Python 扩展契约、配置入口、使用文档与 PostgreSQL 集成验证
- 记录华为 DAVx⁵、Tasks.org 和系统日历联系人本地验收
- 明确 vobject 的无类型边界,使用 SQLAlchemy Connection 执行测试锁配置
- 记录独立 wheel 安装、双向同步、离线例外、父子任务和照片往返
- 增加 13 张真机截图及可构建的扩展文档站
- 说明华为全天事件时区缺陷、Etar 验证结果与 preview 网络条件
补充 TS PR、9 张截图、Registry 来源限制,以及受控安装失败和未知响应的验证证据。
- 电话、描述和媒体使用通用 Block,原生属性由关系组合
- 保留根身份并原子迁移,撤销发布不破坏外部引用
- 锁定共享内容与 blob,保护 ETag 冲突检查
@xiaoland xiaoland changed the title feat(caldav): 提供日历、任务与联系人同步 feat(caldav): 以共享信息图提供日历、任务与联系人同步 Oct 21, 2026
- 将三个文件与 fixture 迁入 scripts/tests/caldav
- 复用隔离环境,排除默认测试收集并更正验证说明
- 持久模型和教程已归入对应文档
- 原始验收证据保留于本机忽略目录
- 清理功能分支后仍可访问 Web 教程
@xiaoland
xiaoland merged commit fbe07f5 into main Oct 21, 2026
6 of 7 checks passed
@xiaoland
xiaoland deleted the feat/caldav-extension branch October 21, 2026 09:21
xiaoland added a commit to InKCre/impl-ts that referenced this pull request Oct 21, 2026
提供 CalDAV 连接向导,以及集合、日历、任务和联系人的预览与阅读。向导按目标 Python Peer 的实际安装/运行状态准备连接,保留已有版本与密码,处理安装重启和写入结果未知的状态;不会因打开或刷新向导重置配置。

内容从共享语义图组合,兼容 v1/v2;电话、描述、媒体和父任务可跳转独立内容,Web 不保存另一份可写事实。保留全天、时区、重复例外及提醒语义,远程照片保留显式链接。配套 Python:InKCre/impl-py#146 。

preview 实测使用指定华为同步的数据:向导读取运行中的 0.2.0;联系人显示共享电话与头像,独立电话跳转 #18,已撤销 DAV 发布的任务 #22 仍可阅读并跳转描述;390px 文档宽度为 390px。重启前后共享配置和图摘要不变。教程及截图在 extensions/caldav/docs/module-federation/index.md,跨仓教程链接已指向 main。

本任务的三个排查文件及 fixture 移至 extensions/caldav/scripts/tests,仅通过显式 verify 运行,撤销专用 CI 步骤,不计为正式测试。同步最新主干后统一使用已有 ui-web 2.3.0,修正旧 peer 快照引用;冻结安装与全仓格式/lint/类型/构建通过。最终 CI 和 preview 状态见 checks。

当前 MF 版本 0.0.0,首次正式版本由本 PR 的 minor Changeset 和正常发布流程产生;网页只提供连接准备与阅读。手机 preview 的网络隧道为验收条件,随任务结束清理。

This branch was successfully deployed

1 active deployment
preview — 6c9bc1c0 Deployed Oct 21, 2026 by xiaoland via Retire preview resources #482
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant